package com.example.yxweather

import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager2.widget.ViewPager2
import com.example.yxweather.storage.TokenPreferences


class MainActivity : AppCompatActivity() {

    private var viewPager: ViewPager2? = null // ViewPager2实例，用于页面滑动
    private var adapter: ViewPagerAdapter? = null // 页面适配器
    private var currentPosition = 0 // 记录当前页面位置

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.ac_main)

        addClickEvent() // 添加点击事件监听

        // 测试是否有token
        val token = TokenPreferences.getInstance(this).getToken()
        Toast.makeText(this, token ?: "无token", Toast.LENGTH_SHORT).show()

        // 恢复保存的状态
        if (savedInstanceState != null) {
            currentPosition = savedInstanceState.getInt("currentPosition", 0)
        }

        loadFragment() // 加载Fragment
        viewPager?.currentItem = currentPosition // 设置当前页面
    }

    fun loadFragment() {
        if (viewPager == null) {
            viewPager = findViewById(R.id.vpMain) // 初始化ViewPager

            // 禁止滑动，也可以不加此行代码
            // 只不过该页面有横向recycleView, 禁止掉会体验好些
            viewPager?.isUserInputEnabled = false

            // 注册页面切换监听
            viewPager?.registerOnPageChangeCallback(
                object : ViewPager2.OnPageChangeCallback() {
                    override fun onPageSelected(position: Int) {
                        super.onPageSelected(position)
                        // 页面切换时的处理逻辑
                        setCurrentTab(position) // 更新底部导航栏状态
                        currentPosition = position // 更新当前位置
                        Log.d("ViewPager", "切换到页面: $position") // 打印日志
                    }
                })
        }
        if (adapter == null) {
            adapter = ViewPagerAdapter(this) // 初始化适配器
        }
        viewPager?.adapter = adapter // 设置适配器
        viewPager?.offscreenPageLimit = 2 // 缓存所有3个页面（总数-1）
    }


    /**
     * 添加底部导航栏的点击事件
     */
    fun addClickEvent() {
        val bottomNavigationView = findViewById<ViewGroup>(R.id.llBottomNavigation)
        val homeContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_home)
        val lifeContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_life)
        val profileContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_profile)

        // 首页点击事件
        homeContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                viewPager?.currentItem = 0 // 跳转到首页
                setCurrentTab(0) // 更新底部导航栏状态
            }
        })

        // 生活点击事件
        lifeContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                viewPager?.currentItem = 1 // 跳转到生活页
                setCurrentTab(1) // 更新底部导航栏状态
            }
        })

        // 我的点击事件
        profileContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                viewPager?.currentItem = 2 // 跳转到我的页
                setCurrentTab(2) // 更新底部导航栏状态
            }
        })
    }

    /**
     * 更新底部导航栏的状态
     * @param position 当前页面位置
     */
    fun setCurrentTab(position: Int) {
        val bottomNavigationView = findViewById<ViewGroup>(R.id.llBottomNavigation)
        val tvHome = bottomNavigationView.findViewById<TextView>(R.id.tv_home)
        val imageHome = bottomNavigationView.findViewById<ImageView>(R.id.img_home)

        val tvLife = bottomNavigationView.findViewById<TextView>(R.id.tv_life)
        val imgLife = bottomNavigationView.findViewById<ImageView>(R.id.img_life)

        val tvProfile = bottomNavigationView.findViewById<TextView>(R.id.tv_profile)
        val imgProfile = bottomNavigationView.findViewById<ImageView>(R.id.img_profile)

        when (position) {
            0 -> {
                // 首页选中样式
                tvHome.setTextColor(resources.getColor(R.color.weather_primary, null))
                imageHome.setColorFilter(resources.getColor(R.color.weather_primary, null))

                // 生活页非选中样式
                tvLife.setTextColor(resources.getColor(R.color.default_gray, null))
                imgLife.setColorFilter(resources.getColor(R.color.default_gray, null))
                // 我的页非选中样式
                tvProfile.setTextColor(resources.getColor(R.color.default_gray, null))
                imgProfile.setColorFilter(resources.getColor(R.color.default_gray, null))
            }

            1 -> {
                // 首页非选中样式
                tvHome.setTextColor(resources.getColor(R.color.default_gray, null))
                imageHome.setColorFilter(resources.getColor(R.color.default_gray, null))
                // 生活页选中样式
                tvLife.setTextColor(resources.getColor(R.color.weather_primary, null))
                imgLife.setColorFilter(resources.getColor(R.color.weather_primary, null))
                // 我的页非选中样式
                tvProfile.setTextColor(resources.getColor(R.color.default_gray, null))
                imgProfile.setColorFilter(resources.getColor(R.color.default_gray, null))
            }

            2 -> {
                // 首页非选中样式
                tvHome.setTextColor(resources.getColor(R.color.default_gray))
                imageHome.setColorFilter(resources.getColor(R.color.default_gray))

                // 生活页非选中样式
                tvLife.setTextColor(resources.getColor(R.color.default_gray))
                imgLife.setColorFilter(resources.getColor(R.color.default_gray))

                // 我的页选中样式
                tvProfile.setTextColor(resources.getColor(R.color.weather_primary))
                imgProfile.setColorFilter(resources.getColor(R.color.weather_primary))
            }
        }
    }
}